package com.ruoyi.mdkt.controller;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.mdkt.entity.Discuss;
import com.ruoyi.mdkt.entity.vo.DiscussVO;
import com.ruoyi.mdkt.service.DiscussService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author gwl
 * @since 2022-10-22
 */
@CrossOrigin

@RestController
@RequestMapping("/mdkt/discuss")
public class DiscussController extends BaseController {
    @Autowired
    private DiscussService discussService;

    @GetMapping("/like/{discussId}")
    public R like(@PathVariable("discussId") String discussId) {
        Discuss discuss = discussService.getDiscussByDiscussId(discussId);
        discuss.setLikeNum(discuss.getLikeNum() + 1);
        discussService.updateById(discuss);
        return R.ok();
    }

    @GetMapping("/list/{leaderId}")
    public R list(@PathVariable("leaderId") String leaderId) {
        return R.ok(discussService.getDiscussByLeaderId(leaderId));
    }

    @GetMapping("/getSubDiscuss/{discussId}")
    public R getSubDiscuss(@PathVariable("discussId") String discussId) {
        return R.ok(discussService.getDiscussByParentId(discussId));
    }

    @PostMapping("/post")
    public R post(@RequestBody Discuss discuss) {
        if (discussService.save(discuss)) {
            return R.ok();
        } else {
            return R.fail();
        }
    }

    @DeleteMapping("/delete/{discussId}")
    public R delete(@PathVariable("discussId") String discussId) {
        if (discussService.getDiscussByDiscussId(discussId).getUserId().equals(getLoginUser().getUserId())) {
            discussService.removeById(discussId);
            return R.ok();
        } else {
            return R.fail();
        }
    }

    @GetMapping("/fuzzyQueryDiscussByUserId/{userId}")
    public R fuzzyQueryDiscussByUserId(@PathVariable("userId") Long userId){
        LambdaQueryWrapper<Discuss> lambdaQueryWrapper=new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(Discuss::getUserId,userId)
                .eq(Discuss::getParentId,0);
        List<Discuss> list=discussService.list(lambdaQueryWrapper);
        return R.ok(list);
    }

    @GetMapping("/fuzzyQueryDiscussByMessage/{message}")
    public R fuzzyQueryDiscussByMessage(@PathVariable("message") String message){
        LambdaQueryWrapper<Discuss> lambdaQueryWrapper=new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(Discuss::getParentId,0)
                .like(Discuss::getMessage,'%'+message+'%');
        List<Discuss> list=discussService.list(lambdaQueryWrapper);
        return R.ok(list);
    }

}

